package org.jw.testemunhopublico.repository.entities;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * The persistent class for the tb_tp_publicador database table.
 * 
 */
@Entity
@Table(name = "tb_tp_publicador")
@NamedQuery(name = "Publicador.findAll", query = "SELECT p FROM Publicador p")
public class Publicador implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_publicador")
	private int idPublicador;

	@Column(name = "ds_email")
	private String email;

	@Column(name = "ds_nome")
	private String nome;

	@Column(name = "fl_pioneiro_regular")
	private boolean pioneiroRegular;

	@Column(name = "fl_sexo")
	private char sexo;

	@Column(name = "fl_testemunho_metropolitano")
	private boolean testemunhoMetropolitano;

	// bi-directional many-to-one association to Telefone
	@OneToMany(mappedBy = "publicador")
	private List<Telefone> telefones;

	public Publicador() {
	}

	public Telefone addTelefone(Telefone telefone) {
		getTelefones().add(telefone);
		telefone.setPublicador(this);

		return telefone;
	}

	public String getEmail() {
		return this.email;
	}

	public int getIdPublicador() {
		return this.idPublicador;
	}

	public String getNome() {
		return this.nome;
	}

	public boolean getPioneiroRegular() {
		return this.pioneiroRegular;
	}

	public char getSexo() {
		return this.sexo;
	}

	public List<Telefone> getTelefones() {
		return this.telefones;
	}

	public boolean getTestemunhoMetropolitano() {
		return this.testemunhoMetropolitano;
	}

	public Telefone removeTelefone(Telefone telefone) {
		getTelefones().remove(telefone);
		telefone.setPublicador(null);

		return telefone;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public void setIdPublicador(int idPublicador) {
		this.idPublicador = idPublicador;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setPioneiroRegular(boolean pioneiroRegular) {
		this.pioneiroRegular = pioneiroRegular;
	}

	public void setSexo(char sexo) {
		this.sexo = sexo;
	}

	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}

	public void setTestemunhoMetropolitano(boolean testemunhoMetropolitano) {
		this.testemunhoMetropolitano = testemunhoMetropolitano;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Publicador other = (Publicador) obj;
		if (idPublicador != other.idPublicador)
			return false;
		return true;
	}

	@Override
	public String toString() {
		return nome;
	}

}